#pragma once

#ifdef __cplusplus
extern "C" {
#endif

#include "stdbool.h"
#include "stdint.h"
#include "pwm_motor.h"

void PwmMotor_Init(void);
void PwmMotor_Set_Speed_All(int speed_1, int speed_2, int speed_3, int speed_4);
void PwmMotor_Set_Speed(motor_id_t motor_id, int speed);
void PwmMotor_Stop(motor_id_t motor_id, bool brake);
// 根据速度和偏转角计算四个轮子的速度 (麦轮)
void set_deflection(int speed, int deflection, int *l1, int *l2, int *r1, int *r2);
// 根据速度、偏转角和旋转率计算四个轮子的速度
void set_deflection_rate(float speed, float deflection, float rate, float *l1, float *l2, float *r1, float *r2);
// 基本运动控制函数
void move_forward(int speed);
void move_backward(int speed);
void move_left(int speed);
void move_right(int speed);
// 旋转控制函数
void rotate_left(int speed);
void rotate_right(int speed);
// 对角线移动控制函数
void move_diagonal_left_front(int speed);
void move_diagonal_left_back(int speed);
void move_diagonal_right_front(int speed);
void move_diagonal_right_back(int speed);
// 高级运动控制函数
void drifting(int speed, int deflection, int rate);

extern int debug;  // 调试模式开关



#ifdef __cplusplus
}
#endif
